package org.quasar.copaPaises.businessLayer;

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class ParticipanteTest {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
	}

	@After
	public void tearDown() throws Exception {
	}

	@Test
	public final void testAllInstances() {
		Jogador j = new Jogador();
		Treinador t = new Treinador();

		boolean um = false;
		boolean dois = false;


		for(Participante p : j.allInstances()){
			if(j.equals(p))
				um= true;
			if(t.equals(p))
				dois= true;

		}
		assertTrue("Teste do allInstances do participante falhou!", um );
		assertTrue("Teste do allInstances do participante falhou!", dois );
	}

	@Test
	public final void testParticipante() {
		assertNotNull("Teste do Contrutor do Participante falhou!", new Jogador());
	}

	@Test
	public final void testParticipanteCalendarDateStringPais() {
		CalendarDate cd1 = new CalendarDate();
		String nome = "nome";
		Pais pais = new Pais();
		Treinador t = new Treinador(cd1, nome, pais);

		assertEquals("Teste do construtor do Participante falhou!", cd1, t.data_nascimento());
		assertEquals("Teste do construtor do Participante falhou!", nome, t.nome());
		assertEquals("Teste do construtor do Participante falhou!", pais, t.nacionalidade());
	}

	@Test
	public final void testData_nascimento() {
		CalendarDate cd = new CalendarDate();
		assertEquals("Teste da data de nascimento do participante falhou!", cd,new Jogador(cd,null,null,null,null).data_nascimento());
	}

	@Test
	public final void testSetData_nascimento() {
		CalendarDate cd = new CalendarDate();
		Jogador j = new Jogador(null,null,null,null,null);
		j.setData_nascimento(cd);
		assertEquals("Teste do set da data de nascimento do participante falhou!", cd,j.data_nascimento());
	}

	@Test
	public final void testNome() {
		String nome = "nome";
		assertEquals("Teste do nome do participante falhou!", nome,new Jogador(null,nome,null,null,null).nome());
	}

	@Test
	public final void testSetNome() {
		String nome = "nome";
		Jogador j = new Jogador(null,null,null,null,null);
		j.setNome(nome);
		assertEquals("Teste do set do nome do participante falhou!", nome,j.nome());
	}

	@Test
	public final void testNacionalidade() {
		Pais nac = new Pais();
		assertEquals("Teste da Nacionalidade do participante falhou!", nac,new Jogador(null,null,nac,null,null).nacionalidade());
	}

	@Test
	public final void testSetNacionalidade() {
		Pais nac = new Pais();
		Jogador j = new Jogador(null,null,null,null,null);
		j.setNacionalidade(nac);
		assertEquals("Teste do set da nacionalidade do participante falhou!", nac,j.nacionalidade());
	}

	@Test
	public final void testToString() {
		CalendarDate data_nascimento = new CalendarDate();
		String nome = "nome";
		Pais nacionalidade = new Pais();
		Treinador t = new Treinador(data_nascimento,nome,nacionalidade);

		assertEquals("Teste no toString do participante falhou!", 
				new String("Treinador [Participante [data_nascimento=" + data_nascimento + ", nome=" + nome + ", nacionalidade=" + nacionalidade + "]\n]\n"), t.toString());

		String nome2 = "nome";
		CalendarDate data_nascimento2 = new CalendarDate();
		Pais nacionalidade2 = new Pais();
		PosicaoJogador posicao = PosicaoJogador.GuardaRedes;
		Clube clube = new Clube();
		
		Jogador j15 = new Jogador(data_nascimento2,nome2,nacionalidade2, posicao, clube);
		assertEquals("Teste do toString do participante falhou!", new String("Jogador ["+"Participante [data_nascimento=" + data_nascimento2 + ", nome=" + nome2 + ", nacionalidade=" + nacionalidade2 + "]\n"+"posicao=" + posicao + ", clube=" + clube + "]\n"), j15.toString());

	}

}
